// Copyright (c) 2023 Presto Labs Pte. Ltd.
// Author: fengyang

#pragma once

#include <map>
#include <memory>
#include <regex>
#include <set>
#include <string>
#include <unordered_map>
#include <vector>

#include <simdjson.h>

#include "coin2/base/log.h"
#include "coin2/exchange/base/feed/processor.h"
#include "coin2/exchange/base/market/enums.h"

namespace coin2::exchange::maicoin::feed_v2 {
namespace impl {
using namespace std::string_literals;
using coin2::exchange::base::market::ExchangeType;
using coin2::exchange::base::market::MarketType;

class MaicoinFeedProcessor : public base::feed::FeedParsingProcessor {
 public:
  explicit MaicoinFeedProcessor(const std::string& system_name,
                               const coin2::exchange::di::ConstantInjection& ci,
                               const feed::RawParserConfig& config,
                               const MarketExchangeApi& mea)
    : FeedParsingProcessor(
          system_name,
          mea,
          ci,
          config,
          "cc/coin2/exchange/maicoin/feed_v2/schema.json") {
  }

  void OnTopicRecord(const base::executor::TopicRecordPacket& packet) override;
};

}  // namespace impl
using impl::MaicoinFeedProcessor;
}  // namespace coin2::exchange::maicoin::feed_v2
